var store;
var grid;

Ext.onReady(function() {

    // create the Data Store
    store = new Ext.data.JsonStore({
        root: 'hotels',
        totalProperty: 'totalCount',
        idProperty: 'id',
        remoteSort: true,

        fields: [
            'id', 'hotelTitle', 'cityTitle', 'stars', 'actions'
        ],

        // load using script tags for cross domain, if the data in on the same domain as
        // this page, an HttpProxy would be better
        proxy: new Ext.data.ScriptTagProxy({
            url: '/admin/hotel/getdata/'
        })
    });
    store.setDefaultSort('hotelTitle', 'asc');

    grid = new Ext.grid.GridPanel({
        width:600,
        height:530,
        title:'Отели',
        store: store,
        trackMouseOver:false,
        disableSelection:true,
        loadMask: {msg: 'Загрузка...'},

        // grid columns
        columns:[{
            id: 'id', // id assigned so we can apply custom css (e.g. .x-grid-col-topic b { color:#333 })
            header: "ID",
            dataIndex: 'id',
            width: 60,
            sortable: true,
			align: 'center',
			hidden: true
        },{
            header: "Название",
            dataIndex: 'hotelTitle',
			align: 'left',
            sortable: true,
			width:200
        },{
            header: "Город",
            dataIndex: 'cityTitle',
			align: 'left',
            sortable: true,
			width:120
        },{
            header: "Кол-во звезд",
            dataIndex: 'stars',
			align: 'left',
            sortable: true,
			width:100
        },{
            header: "Действия",
            dataIndex: 'actions',
			align: 'center',
            width: 210,
            sortable: false
        }],
		
        // customize view config
        viewConfig: {
            forceFit:true,
            enableRowBody:true,
            showPreview:false,
            getRowClass : function(record, rowIndex, p, store){
                if(this.showPreview){
                    p.body = '<p>'+record.data.excerpt+'</p>';
                    return 'x-grid3-row-expanded';
                }
                return 'x-grid3-row-collapsed';
            }
        },

        // paging bar on the bottom
        bbar: new Ext.PagingToolbar({
            pageSize: 20,
            store: store,
            displayInfo: true,
			beforePageText: 'Страница',
			afterPageText: 'из {0}',
            displayMsg: 'Показаны {0} - {1} из {2}',
            emptyMsg: "Нет данных",
            items:['-']
        }),
		
		tbar: [{
            text: 'Создать',
			iconCls: 'silk-add',
            handler : function(){
                location.href = '/admin/hotel/create/'
            }
        }],
		
		sm: new Ext.grid.RowSelectionModel({singleSelect:true})
    });
	
	Ext.apply(Ext.grid.GridView.prototype, {
		sortAscText  : "Сортировать по возрастанию",
    	sortDescText : "Сортировать по убыванию",
    	lockText     : "Закрепить столбец",
    	unlockText   : "Снять закрепление столбца",
    	columnsText  : "Столбцы"
  	});
	
	Ext.DomHelper.insertFirst(document.body, {id:'msg-div-casper', cls:'ext-el-mask'}, true);

    // render it
    grid.render('hotelgrid');
	
    // trigger the data store load
    store.load({params:{start:0, limit:20}});
});

function hotelRooms(id)
{
	location.href = '/admin/hoteldates/index/id/' + parseInt(id) + '/';
}

function editHotel(id)
{
	location.href = '/admin/hotel/edit/id/' + parseInt(id) + '/';
}

function deleteHotel(id)
{
	Ext.MessageBox.buttonText.yes = 'Да';
	Ext.MessageBox.buttonText.no  = 'Нет';		
	Ext.MessageBox.confirm('Предупреждение!', 'Вы действительно хотите удалить гостиницу?', function (btn) {
		if (btn == 'yes') {
			Ext.Ajax.request({
   				url: '/admin/hotel/remove/id/' + parseInt(id) + '/',
   				success: function() {
					store.remove(store.getById(parseInt(id)));
					Ext.confpopup.msg('Гостиница удалена', '');
					store.reload();
				},
   				failure: function() {},
				disableCaching: false
			});
		}
	});
}